Are You Being Served
Volume Number: 15
Issue Number: 11
Column Tag: Version Control
Are You Being Served?
by Jonathan Guyer, Washington, DC
Version management for the well-appointed
developer
There are several version control options for the Mac, but for years my favorite has
been VOODOO from UNI SOFTWARE PLUS (UNISOFT). I'm apparently not alone, as
VOODOO received the 1997 MacWorld/MacTech Eddy award for the Best Developer
Tool. Earlier this year, UNISOFT released a completely redesigned and considerably
more powerful implementation: VOODOO Server
. This latest version
control offering for the Macintosh is the subject of this article.
I'll Start Next Week, Honest...
Version management, like backups and flossing, is one of those things that we all know
that we should do, but that too many of us never seem to find the time to do properly.
Each is tedious and painful. Each consumes time that could be devoted to something
more enjoyable. Besides, Byzantine source code, like head crashes and gingivitis, is
something that only happens to other people, right?
If only that were true. How often have you pursued a promising trail of
"improvements" to your application code, only to discover that you've turned
something that worked reasonably well into a convoluted, poorly documented,
unworkable mess of #ifdef's? (Assuming you even exercised the limited discipline of
#ifdefing your code and didn't just hack away at the only copy of your source files
(which, of course, I've never done)). No problem, you think, "I backed up my source
code before I started into this." But wait, that was over a month ago, and some of the
subsequent code was pretty good stuff. And what about your coworkers, who've been
productively writing for the last month, oblivious to the mess you've made of the
source tree? (We all know that it's our coworkers who do this to us, never us to them,
but you get the idea.)
Enter version control. If you floss regularly and Retrospect dutifully backs up your
hard disk every night, you might wonder why you need specialized version management
software. Admittedly, many of the tasks are similar (to backup, not flossing). You
could probably do an adequate job of administering your source tree with just
Retrospect. Some advantages of having a dedicated version manager, however, are:
• Tight integration with one or more development environments. Numerous
plugins for numerous source control systems have been developed for
CodeWarrior, MPW, BBEdit, and Alpha, at least.
• The ability to tag the entries in the database. Backup software lets you
keep track of when you stored the files. Version control software also allows
you to make annotations telling why you made a given set of changes.
• Database structure needn't follow your local folder structure. The point of
backup software is to restore the state of your hard disk to what it was before
disaster struck. The point of version management software is to store a
historical record of your project in a structure that's meaningful for your
project (this is not necessarily the structure demanded by your compiler).
• Facilities to find out how your local files compare with those checked into
the version archive. Backup software just stores any files that have changed
since the last backup. Checking files into a version database is a more reasoned
process.
You'll usually only want to check-in stable sources and you'll want to take care not to
clobber your coworkers' changes.
As UNISOFT stresses, though, version management is no replacement for regular
backups. In the unlikely event that your VOODOO Server database gets corrupted,
nothing's going to save you but a pristine backup (version management's not much of a
substitute for proper dental hygiene, either).
Given the central role that version control plays in the life of any sane programmer,
it's not surprising that the subject has been covered in MacTech before. Paul Snively
(Snively 1996) and Richard Wesley (Wesley 1998) wrote excellent surveys of
version management software on the Macintosh and Christoph Reichenberger
(Reichenberger 1996) reviewed VOODOO Server's non-client/server predecessor.
My experience with version control is limited to several years with VOODOO, nearly a
year with VOODOO Server, and an exceptionally brief flirtation with a couple of Mac
CVS clients. As a result, I won't attempt to draw comparisons between VOODOO Server
and other tools, except where those comparisons are unequivocal. I commend anyone
interested in the range of version management options on the Mac to read Paul
Snively's and Richard Wesley's earlier MacTech articles. There are also at least two
web pages devoted to version control on the Mac: Metrowerks'
and Richard Wesley's
.
VOODOO Server's Notion of Version Management
If you're already familiar with VOODOO, you may want to skip this section, since
VOODOO and VOODOO Server handle version management in largely the same way. Note,
however, that VOODOO Server does not yet support variants (see below).
In addition, the treatment of files within a VOODOO Server project is a little different.
The original VOODOO organizes sources in a hierarchy of structure nodes, component
nodes, version group nodes, and variant nodes. VOODOO Server has a somewhat simpler
architecture of parts, folders, files, and (eventually) variants. In VOODOO Server, the
structure within each part is a direct reflection of the folder structure that was stored
in that part. VOODOO's structure nodes can have an abstract arrangement that bears no
relation to the folders on your hard disk.
UNISOFT treats source control a little differently than other tools. The acronym
"Versions Of Outdated Documents Organized Orthogonally" actually does convey an
important quality of VOODOO: orthogonality. Two dimensions of that orthogonality are
common to all version management tools; they're what it's all about: components and